package com.heatup.apt.common.dao.store;

import com.baomidou.mybatisplus.mapper.AutoMapper;
import com.heatup.apt.model.api.CityAreaResultModel;
import com.heatup.apt.model.api.store.StoreResultModel;
import com.heatup.apt.model.store.StoreInfo;
import com.heatup.apt.model.store.StoreInfoRequest;
import com.heatup.apt.model.store.StorePriceInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;

/**
 *
 * StoreInfo 表数据库控制层接口
 *
 */
@Component
public interface StoreInfoMapper extends AutoMapper<StoreInfo> {

    /**
     * 根据课程ID查店面
     *
     * @param id
     * @return
     */
    List<StoreInfo> selectByCourseId(Integer courseId);


    List<StorePriceInfo> selectByByFactor(@Param("store_name") String store_name,@Param("province_id") long province_id,@Param("city_id") long city_id,@Param("area_id") long area_id, @Param("status") String status, @Param("offset") int offset, @Param("limit") int limit);


    int selectStoreCountByByFactor(@Param("store_name") String store_name, @Param("province_id") long province_id,@Param("city_id") long city_id,@Param("area_id") long area_id,@Param("status") String status);

    StorePriceInfo selectStorePriceInfoByByStoreId(@Param("store_id") int storeId);

    /**
     * 分页查询门店
     * @param paramsMap
     * @return
     */
    List<StoreInfoRequest> queryStoreList(Map<String, Object> paramsMap);

    /**
     * 查询门店总数
     * @param paramsMap
     * @return
     */
    int queryStoreCount(Map<String, Object> paramsMap);

    /**
     * 根据门店ID查询门店
     * @param storeId
     * @return
     */
    StoreInfoRequest queryStoreInfoById(Long storeId);

    /**
     * 查询所有在线门店
     * @return
     */
    List<StoreInfo> queryAllStoreList();
    
    /**
     * 根据课程id查询对应的门店
     * @param course_id
     * @return
     */
    @Select({
        "SELECT si.id as id, si.store_name as storeName FROM store_info si ",
        "LEFT JOIN course_store cs ON si.id=cs.store_id ",
        "LEFT JOIN course_info ci ON ci.id=cs.course_id WHERE ci.id=#{course_id}",
	})
    List<StoreInfo> queryStoreListByCourseId(@Param("course_id") int course_id);
    /**
     * 查询所有正常状态门店 blank
     *
     * @param paramsMap
     * @return
     */
    List<StoreResultModel> queryAllStore(Map<String, Object> paramsMap);

    /**
     * 查询所有正常状态门店总计
     *
     * @return
     */
    int queryAllStoreCount(Map<String, Object> paramsMap);
    
    /**
     * 查询所有门店的城市区域信息
     * @return
     */
    List<CityAreaResultModel> queryCityAreaResultForStoreInfo();

    /**
     * 查询所有有操房的门店
     *
     * @return
     */
    List<StoreInfo> queryStoreListWithWorkoutRoom();
    
    /**
     * 数据中心门店列表
     * @return
     */
    List<StoreInfoRequest> queryDataCenterStoreList(@Param("status")String status,@Param("manageType")String manageType);
    
    /**
     * 根据id列表查询门店列表
     * @param idList
     * @return
     */
    List<StoreInfo> queryStoreInfoListByIdList(List<String> idList);
    
    /**
     * 获取用户常去门店
     * @param userId
     * @return
     */
    StoreResultModel queryUserStoreByUserId(Map<String, Object> paramsMap);

    /**
     * 查询用户距离门店的距离
     *
     * @author blank 2017/8/1 上午11:42
     */
    Double queryStoreDistance(Map<String, Object> params);
}